package wodegua.d31_java高级.d3_annotation;

/**
 * 注解(Annotation)
 * 就是java代码里的特殊标记，比如:@Overide、@Test等，作用是:让其他程序根据注解信息来决定怎么执行该程序。
 * 注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处。
 *
 * 自定义注解
 * 就是自己定义注解。
 * public @interface 注解名称{
 *      public 属性类型 属性名()default 默认值;
 * }
 *
 * 特殊属性名:value
 * 如果注解中只有一个value属性，使用注解时，value名称可以不写!!
 *
 * 注解的原理
 * 1.注解本质是一个接口，Java中所有注解都是继承了Annotation接口的。
 * 2.@注解(...):其实就是一个实现类对象，实现了该注解以及Annotation接口，
 *
 * 什么是注解的解析?
 * 就是判断类上、方法上、成员变量上是否存在注解，并把注解里的内容给解析出来
 *
 * 如何解析注解?
 * 1.指导思想:要解析谁上面的注解，就应该先拿到谁。
 * 2.比如要解析类上面的注解，则应该先获取该类的Class对象，再通过Class对象解析其上面的注解。
 * 3.比如要解析成员方法上的注解，则应该获取到该成员方法的Method对象，再通过Method对象解析其上面的注解。
 * 4.Class 、Method、Field,constructor、都实现了AnnotatedElement接口，它们都拥有解析注解的能力。
 *
 * AnnotatedElement接口提供了解析注解的方法
 * public Annotation[] getDeclaredAnnotations()      获取当前对象上面的注解。
 * public T getDeclaredAnnotation(Class<T> annotationClass)     获取指定的注解对象
 * public boolean isAnnotationPresent(class<Annotation> annotationClass)    判断当前对象上是否存在某个注解
 *
 */
public class Test {
    public static void main(String[] args) {

    }
}
